package com.yuandian.bpm.bi.modules.quartz.util.redis;

import lombok.extern.slf4j.Slf4j;
import org.quartz.CronExpression;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 模块名称：redis组件，向通道中发送数据（发布端）
 */
@Slf4j
@Component
public class RedisSendMsg {

	@Resource
    private RedisTemplate redisTemplate;

	/**
	 * 向redis通道中发送数据
	 * @param param   删除/暂停任务：task|拨测设备ID|delete|任务ID|cron表达式|任务类型
	 *
	 *                  说明：
	 *                  消息类型：固定字符串（task）
	 *                  任务类型：固定字符串（add、delete）
	 *                  任务ID：每个任务的自增长ID
	 */
	public void sendMsg(String message) {
		try {
		    redisTemplate.convertAndSend(Constants.Redis.QUEUE_PROBE_TASK, message);
		} catch(Exception e) {
			log.info("向redis通道中发送数据异常：", e);
		}
	}

	public static void main(String[] args) {
		System.out.println(isValid("23 0/5 * * * ?"));
	}

	/**
	 * 返回一个布尔值代表一个给定的Cron表达式的有效性
	 *
	 * @param cronExpression Cron表达式
	 * @return boolean 表达式是否有效
	 */
	public static boolean isValid(String cronExpression)
	{
		return CronExpression.isValidExpression(cronExpression);
	}
}
